#define TD(FMT,DATA) kml_write_xml(0, "<tr><td>" FMT " </td></tr>\n", DATA)
#define TD2(FMT,DATA, DATA2) kml_write_xml(0, "<tr><td>" FMT " </td></tr>\n", DATA, DATA2)
+static const char kml22_hdr[] =
+ "<kml xmlns=\"http://earth.google.com/kml/2.2\"\n"
+ "\txmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">\n";
+// No "baked in" schemaLocation, per Google recommendation.
+// "\txsi:schemaLocation=\"http://earth.google.com/kml/2.2 \n"
+// "\thttp://code.google.com/apis/kml/schema/kml22beta.xsd\">\n";
+
+static const char kml21_hdr[] =
+ "<kml xmlns=\"http://earth.google.com/kml/2.1\"\n"
+ "\txmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">\n";
+// No "baked in" schemaLocation, per Google recommendation.
+// "\txsi:schemaLocation=\"http://earth.google.com/kml/2.1 \n"
+// "\thttp://code.google.com/apis/kml/schema/kml21.xsd\">\n";
+
static
arglist_t kml_args[] = {
{"deficon", &opt_deficon, "Default icon name", NULL, ARGTYPE_STRING, ARG_NOMINMAX },
}
track_add_head(trk_head);
- while (3 == sscanf(args,"%lf,%lf,%lf %n", &lon, &lat, &alt, &consumed)){
+ while (3 == sscanf(args, "%lf,%lf,%lf %n", &lon, &lat, &alt, &consumed)){
trkpt = waypt_new();
trkpt->latitude = lat;
trkpt->longitude = lon;
static void kml_write_bitmap_style_(const char *style, const char * bitmap,
int highlighted)
{
- kml_write_xml(0,"<!-- %s %s style -->\n",
+ kml_write_xml(0, "<!-- %s %s style -->\n",
highlighted ? "Highlighted" : "Normal", style);
kml_write_xml(1, "<Style id=\"%s_%c\">\n", style, hovertag(highlighted));
kml_write_xml(1, "<IconStyle>\n");
alt = fmt_distance(pt->altitude, &alt_units);
- kml_write_xml(1,"<description><![CDATA[\n");
- kml_write_xml(1,"<table>\n");
+ kml_write_xml(1, "<description><![CDATA[\n");
+ kml_write_xml(1, "<table>\n");
TD("Longitude: %f", pt->longitude);
TD("Latitude: %f", pt->latitude);
#endif
kml_write_xml(1, "<Point>\n");
if (floating) {
- kml_write_xml(0, "<altitudeMode>absolute</altitudeMode>\n");
+ kml_write_xml(0, "<altitudeMode>absolute</altitudeMode>\n");
}
if (extrude) {
- kml_write_xml(0, "<extrude>1</extrude>\n");
+ kml_write_xml(0, "<extrude>1</extrude>\n");
}
kml_write_xml(0, "<coordinates>%f,%f,%f</coordinates>\n",
pt->longitude, pt->latitude, pt->altitude);
int i;
if (export_points && point3d_list_len > 0) {
- kml_write_xml(-1,"</Folder>\n");
+ kml_write_xml(-1, "</Folder>\n");
}
// Add a linestring for this track?
if (export_lines && point3d_list_len > 0) {
kml_write_xml(1, "<Placemark>\n");
kml_write_xml(0, "<name>Path</name>\n");
-// fprintf(ofd, "\t <MultiGeometry>\n");
kml_write_xml(0, "<styleUrl>#lineStyle</styleUrl>\n");
kml_write_xml(1, "<LineString>\n");
if (floating) {
point3d_list[i].latitude,
point3d_list[i].altitude);
- kml_write_xml(-1,"</coordinates>\n");
+ kml_write_xml(-1, "</coordinates>\n");
kml_write_xml(-1, "</LineString>\n");
-// fprintf(ofd, "\t </MultiGeometry>\n");
kml_write_xml(-1, "</Placemark>\n");
}
}
}
+/*
+ * Completely different writer for geocaches.
+ */
+static
+void kml_gc_make_ballonstyle(void)
+{
+ // BalloonStyle for Geocaches.
+ kml_write_xml(1, "<Style id=\"geocache\"><BalloonStyle><text><![CDATA[\n");
+ kml_write_xml(0, "<a href=\"http://www.geocaching.com\"><img src=\"http://www.geocaching.com/images/nav/logo_sub.gif\"> </a>\n");
+
+ kml_write_xml(0, "<p><a href=\"http://www.geocaching.com/seek/cache_details.aspx?wp=$[gc_num]\"><b>$[gc_num]</b></a> <b>$[gc_name]</b> \n");
+ kml_write_xml(0, "a $[gc_type], by <b>$[gc_placer]</b> [<a href=\"http://www.geocaching.com/profile?id=$[gc_placer_id]\">profile</a>]<br/>\n");
+ kml_write_xml(0, "(ratings out of 5 stars. 1 is easiest, 5 is hardest)<br/>\n");
+ kml_write_xml(0, "Difficulty: <img src=\"http://www.geocaching.com/images/stars/$[gc_diff_stars].gif\" alt=\"$[gc_diff]\" width=\"61\" height=\"13\">\n");
+ kml_write_xml(0, " Terrain: <img src=\"http://www.geocaching.com/images/stars/$[gc_terr_stars].gif\" alt=\"$[gc_terr]\" width=\"61\" height=\"13\"><br />\n");
+ kml_write_xml(0, "Size: <img src=\"http://www.geocaching.com/images/icons/container/$[gc_cont_icon].gif\" width=\"45\" height=\"12\"> ($[gc_cont_icon])<br />\n");
+
+ kml_write_xml(0, "$[gc_issues]\n");
+ kml_write_xml(0, "$[gc_short_desc]\n");
+ kml_write_xml(0, "$[gc_long_desc]\n");
+ kml_write_xml(-1, "]]></text></BalloonStyle></Style>\n");
+}
+
static
char *
kml_lookup_gc_icon(const waypoint *waypointp)
return rb;
}
+static
+char *
+kml_lookup_gc_container(const waypoint *waypointp)
+{
+ char *cont;
+
+ switch (waypointp->gc_data.container) {
+ case gc_micro: cont="micro"; break;
+ case gc_regular: cont="regular"; break;
+ case gc_large: cont="large"; break;
+ case gc_small: cont="small"; break;
+ case gc_virtual: cont="virtual"; break;
+ case gc_other: cont="other"; break;
+ default: cont="not_chosen"; break;
+ }
+
+ return cont;
+}
+
+// Not thread safe. Return strings are small and it's silly to xasprintf/free
+// them so we use a static buffer.
+
+char * kml_gc_mkstar(int rating)
+{
+ static char tmp[40];
+ if (0 == rating % 10) {
+ snprintf(tmp, sizeof(tmp), "stars%d", rating / 10);
+ } else {
+ snprintf(tmp, sizeof(tmp), "stars%d_%d", rating / 10, rating % 10);
+ }
+
+ return tmp;
+}
+
+static void kml_geocache_pr(const waypoint *waypointp)
+{
+ char *p, *is;
+
+ kml_write_xml(1, "<Placemark>\n");
+
+ kml_write_xml(1, "<name>\n");
+ kml_write_xml(0, "<![CDATA[%s]]>\n", waypointp->url_link_text);
+ kml_write_xml(-1, "</name>\n");
+
+ // Timestamp
+ kml_output_timestamp(waypointp);
+
+ kml_write_xml(0, "<styleUrl>#geocache</styleUrl>\n");
+ is = kml_lookup_gc_icon(waypointp);
+ kml_write_xml(1, "<Style>\n");
+ kml_write_xml(1, "<IconStyle>\n");
+ kml_write_xml(1, "<Icon>\n");
+ kml_write_xml(0, "<href>%s</href>\n", is);
+ kml_write_xml(-1, "</Icon>\n");
+ kml_write_xml(-1, "</IconStyle>\n");
+ kml_write_xml(-1, "</Style>\n");
+
+ kml_write_xml(1, "<ExtendedData>\n");
+ kml_write_xml(0, "<Data name=\"gc_num\"><value>%s</value></Data>\n", waypointp->shortname);
+
+ p = xml_entitize(waypointp->url_link_text);
+ kml_write_xml(0, "<Data name=\"gc_name\"><value>%s</value></Data>\n", p);
+ xfree(p);
+
+ p = xml_entitize(waypointp->gc_data.placer);
+ kml_write_xml(0, "<Data name=\"gc_placer\"><value>%s</value></Data>\n", p);
+ xfree(p);
+
+ kml_write_xml(0, "<Data name=\"gc_placer_id\"><value>%d</value></Data>\n", waypointp->gc_data.placer_id);
+
+ kml_write_xml(0, "<Data name=\"gc_diff_stars\"><value>%s</value></Data>\n", kml_gc_mkstar(waypointp->gc_data.diff));
+ kml_write_xml(0, "<Data name=\"gc_terr_stars\"><value>%s</value></Data>\n", kml_gc_mkstar(waypointp->gc_data.terr));
+
+ kml_write_xml(0, "<Data name=\"gc_cont_icon\"><value>%s</value></Data>\n", kml_lookup_gc_container(waypointp));
+
+ // Highlight any issues with the cache, such as temp unavail
+ // or archived.
+ kml_write_xml(0, "<Data name=\"gc_issues\"><value>");
+ if (waypointp->gc_data.is_archived == 1) {
+ kml_write_xml(0, "<font color=\"red\">This cache has been archived.</font><br/>\n");
+ } else if (waypointp->gc_data.is_available == 0) {
+ kml_write_xml(0, "<font color=\"red\">This cache is temporarily unavailable.</font><br/>\n");
+ }
+ kml_write_xml(0, "</value></Data>\n");
+
+ kml_write_xml(0, "<Data name=\"gc_type\"><value>%s</value></Data>\n", gs_get_cachetype(waypointp->gc_data.type));
+ kml_write_xml(0, "<Data name=\"gc_short_desc\"><value><![CDATA[%s]]></value></Data>\n", waypointp->gc_data.desc_short.utfstring ? waypointp->gc_data.desc_short.utfstring : "");
+ kml_write_xml(0, "<Data name=\"gc_long_desc\"><value><![CDATA[%s]]></value></Data>\n", waypointp->gc_data.desc_long.utfstring ? waypointp->gc_data.desc_long.utfstring : "");
+
+ kml_write_xml(-1, "</ExtendedData>\n");
+
+ // Location
+ double lat = waypointp->latitude;;
+ double lng = waypointp->longitude;
+// optionally "fuzz" lat/lng here.
+ kml_write_xml(1, "<Point>\n");
+ kml_write_xml(0, "<coordinates>%f,%f,%f</coordinates>\n",
+ lng, lat,
+ waypointp->altitude == unknown_alt ? 0.0 : waypointp->altitude);
+
+ kml_write_xml(-1, "</Point>\n");
+ kml_write_xml(-1, "</Placemark>\n");
+
+ xfree(is);
+}
+
/*
* WAYPOINTS
*/
{
const char *icon;
+ if (waypointp->gc_data.diff && waypointp->gc_data.terr) {
+ kml_geocache_pr(waypointp);
+ return;
+ }
+
kml_write_xml(1, "<Placemark>\n");
kml_write_xmle("name", waypointp->shortname);
// Description
if (waypointp->url && waypointp->url[0]) {
char * odesc = xml_entitize(waypointp->url);
- kml_write_xml(0,"<Snippet/>\n");
- kml_write_xml(0,"<description>\n");
+ kml_write_xml(0, "<Snippet/>\n");
+ kml_write_xml(0, "<description>\n");
if (waypointp->url_link_text && waypointp->url_link_text[0]) {
char *olink = xml_entitize(waypointp->url_link_text);
- kml_write_xml(0,"<![CDATA[<a href=\"%s\">%s</a>]]>", odesc, olink);
+ kml_write_xml(0, "<![CDATA[<a href=\"%s\">%s</a>]]>", odesc, olink);
xfree(olink);
- }
- else
+ } else {
fputs(odesc, ofd);
-
- /* It's tempting to conditionalize this on smart_names, but
- * KML is so robust that it makes sense to just always do
- * this for geocaches. (Plus the convenience of being able
- * to do a drag-n-drop into Earth without extra option is a
- * win.)
- */
- if (waypointp->gc_data.diff && waypointp->gc_data.terr) {
- if (waypointp->gc_data.placer) {
- char *p = xml_entitize(waypointp->gc_data.placer);
- fprintf(ofd, "<![CDATA[<i> by %s</i>]]>", p);
- xfree(p);
- }
- fprintf(ofd, " %s (%3.1f/%3.1f)",
- gs_get_container(waypointp->gc_data.container),
- waypointp->gc_data.diff / 10.0,
- waypointp->gc_data.terr / 10.0);
- if (waypointp->gc_data.desc_short.utfstring) {
- // Dont entitize it - either XML or HTML.
- // Wrap it in a cdata and let Earth work it out.
-
- fprintf(ofd, "<![CDATA[<p>%s</p>]]>\n", waypointp->gc_data.desc_short.utfstring);
-
- }
}
+
kml_write_xml(0, "</description>\n");
xfree(odesc);
}
kml_write_xml(-1, "</Icon>\n");
kml_write_xml(-1, "</IconStyle>\n");
kml_write_xml(-1, "</Style>\n");
-
- } else if (waypointp->gc_data.diff && waypointp->gc_data.terr) {
- char *is = kml_lookup_gc_icon(waypointp);
- kml_write_xml(1, "<Style>\n");
- kml_write_xml(1, "<IconStyle>\n");
- kml_write_xml(1, "<Icon>\n");
- kml_write_xml(0, "<href>%s</href>\n", is);
- kml_write_xml(-1, "</Icon>\n");
- kml_write_xml(-1, "</IconStyle>\n");
- kml_write_xml(-1, "</Style>\n");
- xfree(is);
} else {
kml_write_xml(0, "<styleUrl>#waypoint</styleUrl>\n");
}
kml_write_xml(1, "<Point>\n");
if (extrude) {
- kml_write_xml(0, "<extrude>1</extrude>\n");
+ kml_write_xml(0, "<extrude>1</extrude>\n");
}
if (floating) {
- kml_write_xml(0, "<altitudeMode>absolute</altitudeMode>\n");
+ kml_write_xml(0, "<altitudeMode>absolute</altitudeMode>\n");
}
kml_write_xml(0, "<coordinates>%f,%f,%f</coordinates>\n",
waypointp->altitude == unknown_alt ? 0.0 : waypointp->altitude);
kml_write_xml(-1, "</Point>\n");
-
-
kml_write_xml(-1, "</Placemark>\n");
}
extrude = (!! strcmp("0", opt_extrude));
trackdata = (!! strcmp("0", opt_trackdata));
- kml_write_xml(0,"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n");
- kml_write_xml(1,"<kml xmlns=\"http://earth.google.com/kml/2.1\"\n"
- "\txmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
- "\txsi:schemaLocation=\"http://earth.google.com/kml/2.1 \n"
- "\thttp://code.google.com/apis/kml/schema/kml21.xsd\">\n"
- );
- kml_write_xml(1,"<Document>\n");
+ kml_write_xml(0, "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n");
+
+ /*
+ * This is a bit cowardly. Our geocache writer takes advantage
+ * of KML 2.2 features present only in Earth 4.2 and newer. The
+ * output is actually compatible with Earth versions back to 4.0
+ * for the non-geocaching case, so we'll be conservative and not
+ * output the new namespace if we don't need it.
+ */
+ if (geocaches_present) {
+ kml_write_xml(1, kml22_hdr);
+ } else {
+ kml_write_xml(1, kml21_hdr);
+ }
+
+ kml_write_xml(1, "<Document>\n");
now = current_time();
strftime(import_time, sizeof(import_time), "%c", localtime(&now));
}
// Style settings for bitmaps
- kml_write_bitmap_style("route", "http://maps.google.com/mapfiles/kml/pal4/icon61.png");
- kml_write_bitmap_style("track", "http://maps.google.com/mapfiles/kml/pal4/icon60.png");
+ if (route_waypt_count()) {
+ kml_write_bitmap_style("route", "http://maps.google.com/mapfiles/kml/pal4/icon61.png");
+ }
+
+ if (track_waypt_count()) {
+ kml_write_bitmap_style("track", "http://maps.google.com/mapfiles/kml/pal4/icon60.png");
+ }
+
kml_write_bitmap_style("waypoint", "http://maps.google.com/mapfiles/kml/pal4/icon61.png");
- // Style settings for line strings
- kml_write_xml(1, "<Style id=\"lineStyle\">\n");
- kml_write_xml(1, "<LineStyle>\n");
- kml_write_xml(0, "<color>%s</color>\n", opt_line_color);
- kml_write_xml(0, "<width>%s</width>\n", opt_line_width);
- kml_write_xml(-1, "</LineStyle>\n");
- kml_write_xml(-1, "</Style>\n");
+ if (track_waypt_count() || route_waypt_count()) {
+ // Style settings for line strings
+ kml_write_xml(1, "<Style id=\"lineStyle\">\n");
+ kml_write_xml(1, "<LineStyle>\n");
+ kml_write_xml(0, "<color>%s</color>\n", opt_line_color);
+ kml_write_xml(0, "<width>%s</width>\n", opt_line_width);
+ kml_write_xml(-1, "</LineStyle>\n");
+ kml_write_xml(-1, "</Style>\n");
+ }
+
+ if (geocaches_present) {
+ kml_gc_make_ballonstyle();
+ }
if (!realtime_positioning) {
kml_write_xml(1, "<Folder>\n");
<?xml version="1.0" encoding="UTF-8"?>
-<kml xmlns="http://earth.google.com/kml/2.1"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://earth.google.com/kml/2.1
- http://code.google.com/apis/kml/schema/kml21.xsd">
+<kml xmlns="http://earth.google.com/kml/2.2"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Document>
<name>GPS device</name>
-<!-- Normal route style -->
- <Style id="route_n">
- <IconStyle>
- <Icon>
- <href>http://maps.google.com/mapfiles/kml/pal4/icon61.png</href>
- </Icon>
- </IconStyle>
- </Style>
-<!-- Highlighted route style -->
- <Style id="route_h">
- <IconStyle>
- <scale>1.2</scale>
- <Icon>
- <href>http://maps.google.com/mapfiles/kml/pal4/icon61.png</href>
- </Icon>
- </IconStyle>
- </Style>
- <StyleMap id="route">
- <Pair>
- <key>normal</key>
- <styleUrl>#route_n</styleUrl>
- </Pair>
- <Pair>
- <key>highlight</key>
- <styleUrl>#route_h</styleUrl>
- </Pair>
- </StyleMap>
-<!-- Normal track style -->
- <Style id="track_n">
- <IconStyle>
- <Icon>
- <href>http://maps.google.com/mapfiles/kml/pal4/icon60.png</href>
- </Icon>
- </IconStyle>
- </Style>
-<!-- Highlighted track style -->
- <Style id="track_h">
- <IconStyle>
- <scale>1.2</scale>
- <Icon>
- <href>http://maps.google.com/mapfiles/kml/pal4/icon60.png</href>
- </Icon>
- </IconStyle>
- </Style>
- <StyleMap id="track">
- <Pair>
- <key>normal</key>
- <styleUrl>#track_n</styleUrl>
- </Pair>
- <Pair>
- <key>highlight</key>
- <styleUrl>#track_h</styleUrl>
- </Pair>
- </StyleMap>
<!-- Normal waypoint style -->
<Style id="waypoint_n">
<IconStyle>
<styleUrl>#waypoint_h</styleUrl>
</Pair>
</StyleMap>
- <Style id="lineStyle">
- <LineStyle>
- <color>64eeee17</color>
- <width>6</width>
- </LineStyle>
- </Style>
+ <Style id="geocache"><BalloonStyle><text><![CDATA[
+ <a href="http://www.geocaching.com"><img src="http://www.geocaching.com/images/nav/logo_sub.gif"> </a>
+ <p><a href="http://www.geocaching.com/seek/cache_details.aspx?wp=$[gc_num]"><b>$[gc_num]</b></a> <b>$[gc_name]</b>
+ a $[gc_type], by <b>$[gc_placer]</b> [<a href="http://www.geocaching.com/profile?id=$[gc_placer_id]">profile</a>]<br/>
+ (ratings out of 5 stars. 1 is easiest, 5 is hardest)<br/>
+ Difficulty: <img src="http://www.geocaching.com/images/stars/$[gc_diff_stars].gif" alt="$[gc_diff]" width="61" height="13">
+ Terrain: <img src="http://www.geocaching.com/images/stars/$[gc_terr_stars].gif" alt="$[gc_terr]" width="61" height="13"><br />
+ Size: <img src="http://www.geocaching.com/images/icons/container/$[gc_cont_icon].gif" width="45" height="12"> ($[gc_cont_icon])<br />
+ $[gc_issues]
+ $[gc_short_desc]
+ $[gc_long_desc]
+ ]]></text></BalloonStyle></Style>
<Folder>
<name>Waypoints</name>
<Placemark>
- <name>GC7FA4</name>
- <Snippet/>
- <description>
-<![CDATA[<a href="http://www.geocaching.com/seek/cache_details.aspx?guid=727f9d2c-f080-41f1-a2c9-a326ead462ed">Points géodésiques du Québec</a>]]><![CDATA[<i> by Sverdrup2</i>]]> Virtual (1.0/1.0)<![CDATA[<p>LES COORDONÉES PUBLIÉES NE REPRÉSENTENT PAS LA LOCALISATION D'UNE CACHE
-PUBLISHED COORDINATES DO NOT REPRESENT THE LOCALIZATION OF A CACHE</p>]]>
- </description>
+ <name>
+<![CDATA[Points géodésiques du Québec]]>
+ </name>
<TimeStamp><when>2002-08-15T07:00:00Z</when></TimeStamp>
+ <styleUrl>#geocache</styleUrl>
<Style>
<IconStyle>
<Icon>
</Icon>
</IconStyle>
</Style>
+ <ExtendedData>
+ <Data name="gc_num"><value>GC7FA4</value></Data>
+ <Data name="gc_name"><value>Points géodésiques du Québec</value></Data>
+ <Data name="gc_placer"><value>Sverdrup2</value></Data>
+ <Data name="gc_placer_id"><value>6293</value></Data>
+ <Data name="gc_diff_stars"><value>stars1</value></Data>
+ <Data name="gc_terr_stars"><value>stars1</value></Data>
+ <Data name="gc_cont_icon"><value>virtual</value></Data>
+ <Data name="gc_issues"><value> </value></Data>
+ <Data name="gc_type"><value>Locationless (Reverse) Cache</value></Data>
+ <Data name="gc_short_desc"><value><![CDATA[LES COORDONÉES PUBLIÉES NE REPRÉSENTENT PAS LA LOCALISATION D'UNE CACHE
+PUBLISHED COORDINATES DO NOT REPRESENT THE LOCALIZATION OF A CACHE]]></value></Data>
+ <Data name="gc_long_desc"><value><![CDATA[Le but de cette cache virtuelle est de trouver les points géodésiques du territoire québécois. Les points géodésiques sont faciles à identifier (capuchons de laiton au niveau du sol). Généralement, il y a un panneau de couleur orange sur un poteau à proximité du point. Sur ce panneau, le numéro du point est identifié. Aussi, la distance relative du panneau au point est indiquée.
+<P>
+Pour inscrire votre découverte, vous devez prendre en note le NUMÉRO DU POINT(inscrit sur le point même ou au centre du panneau)LA COORDONNÉE(en format HDDD MM.MM WGS84 datum ET UTM NAD83 indiquer la zone SVP)et L'ALTITUDE RELATIVE. Si le points n'est pas visible (il se peut qu'il soit sous quelques centimètres de terre) vous pouvez prendre la coordonnée à l'emplacement du panneau SI LA PRÉCISION DE VOTRE GPS EST SUPÉRIEUR À LA DISTANCE INSCRITE SUR LE PANNEAU (ex : Précison du GPS de 5m et distance au point inscrite sur le panneau de 3m).
+<P>
+Une photo du point ou du panneau et une description générale des lieux serait aussi des informations importantes.
+<P>
+Enfin, il faudrait aussi prendre en note l'organisme propriétaire du point géodésique. Au Québec il en existe plusieurs:
+<P>
+Le Service de la géodésie du Québec, Ministère des Ressources naturelles, Québec
+<P>
+La Division des levés géodésiques, Géomatique Canada, Secteur des sciences de la terre Ressources naturelles Canada
+<P>
+Le Service hydrographique du Canada, Direction des sciences, Pêches et Océans Canada et la Garde côtière canadienne, Pêches et Océans Canada
+<P>
+Et tout les anciens noms de ministères et/ou organisme
+<P>
+Des photos de points de même que des panneaux suivront bientôt.
+VOUS NE POUVEZ INSCRIRE QU'UN SEUL POINT GÉODÉSIQUE (UN POINT PAR GÉOCACHEUR)
+Bonne chance!
+
+<P>
+
+The goal of this virtual cache is to find the geodetic points of Québec’s territory. The geodetic points are easy to identify (Brass cap at ground level) Generally, there is an orange panel of on a post near the point. On this panel, the number of the point is identified. Also, the distance relating from the panel to the point is also indicated. In order to log your find, you must take in note THE NUMBER OF THE POINT(registered on the point or in the center of the panel) and THE COORDINATES(in format HDDD MM.MM WGS84 datum AND UTM NAD83 indicate the zone please)and THE ALTITUDE. If the point is not visible (it may be buried under few centimetres) you can take the coordinate at the panel IF THE ACCURACY OF YOUR GPS IS HIGHER Than the DISTANCE REGISTERED ON the PANEL. (Ex: accuracy of the GPS is 5m and the distance to the point registered on the panel is 3m).
+ <P>
+A picture of the point or panel and a general description of the places would be also significant information. Finally, it would also be important to take in note the organization owner of the geodetic point.
+In Quebec there are several:
+<P>
+The "Service de la géodésie du Québec, Ministère des Ressources naturelles Québec"
+The Geodetic Survey Division, Geomatics Canada, Earth Sciences Sector, Natural Resources Canada
+The Canadian Hydrographic Service, Sciences Directorate, Fisheries and Oceans Canada and the Canadian Coast Guard, Fisheries and Oceans Canada
+And all old names of ministries and/or organization
+<P>
+
+PICTURES of points and of the panels will follow soon. YOU CAN ONLY LOG ONE POINT (ONE POINT PER GEOCACHER)
+Good luck!]]></value></Data>
+ </ExtendedData>
<Point>
<coordinates>-73.000000,46.133333,0.000000</coordinates>
</Point>
</Placemark>
<Placemark>
- <name>GCGCA8</name>
- <Snippet/>
- <description>
-<![CDATA[<a href="http://www.geocaching.com/seek/cache_details.aspx?guid=cda94cd6-d657-49bd-8e7e-0031ef1b2613">Oozy rat in a sanitary zoo</a>]]><![CDATA[<i> by robertlipe</i>]]> Unknown (3.0/2.0)<![CDATA[<p>The cache is not at the coordinates above. These coords will get you to the correct park and within 1/2 mile of the cache. The cache is within 35 feet of the trail. It is not handicapped accessible. It is a nice walk in the woods that is practical for all ages. There is no space in the container for trading items. You should bring a writing stick and bug spray is recommended.</p>]]>
- </description>
+ <name>
+<![CDATA[Oozy rat in a sanitary zoo]]>
+ </name>
<TimeStamp><when>2003-06-29T07:00:00Z</when></TimeStamp>
+ <styleUrl>#geocache</styleUrl>
<Style>
<IconStyle>
<Icon>
</Icon>
</IconStyle>
</Style>
+ <ExtendedData>
+ <Data name="gc_num"><value>GCGCA8</value></Data>
+ <Data name="gc_name"><value>Oozy rat in a sanitary zoo</value></Data>
+ <Data name="gc_placer"><value>robertlipe</value></Data>
+ <Data name="gc_placer_id"><value>32733</value></Data>
+ <Data name="gc_diff_stars"><value>stars3</value></Data>
+ <Data name="gc_terr_stars"><value>stars2</value></Data>
+ <Data name="gc_cont_icon"><value>not_chosen</value></Data>
+ <Data name="gc_issues"><value> </value></Data>
+ <Data name="gc_type"><value>Unknown Cache</value></Data>
+ <Data name="gc_short_desc"><value><![CDATA[The cache is not at the coordinates above. These coords will get you to the correct park and within 1/2 mile of the cache. The cache is within 35 feet of the trail. It is not handicapped accessible. It is a nice walk in the woods that is practical for all ages. There is no space in the container for trading items. You should bring a writing stick and bug spray is recommended.]]></value></Data>
+ <Data name="gc_long_desc"><value><![CDATA[So if the cache isn't at the above coordinates, where is it?
+
+<ul>
+
+<li>Too bad I hid a boot
+<li>Too hot to hoot
+<li>Never odd or even
+<li>Do geese see God?
+<li>"Do nine men interpret?" "Nine men," I nod
+<li>Rats live on no evil star
+<li>Go hang a salami, I'm a lasagna hog
+</ul>
+
+Now that it's intuitively obvious to even the most casual observer where the cache is, turn on your geo-mojo and go find it.
+<br>
+<img SRC="http://www.mtgc.org/mtgc_member-banner.gif" WIDTH="500" HEIGHT="40" ALT="Member of Middle Tennessee GeoCachers Club [www.mtgc.org]" BORDER="0"></a></p>]]></value></Data>
+ </ExtendedData>
<Point>
<coordinates>-86.861667,35.921667,0.000000</coordinates>
</Point>